// // 先导入fs模块，然后用readdirSync列出文件
// // 这里可以用sync是因为启动时只运行一次，不存在性能问题:
// let fs = require('fs');
// let files = fs.readdirSync(__dirname + '/controllers');
// // 注意require('koa-router')返回的是函数:
// const router = require('koa-router')();

// // 过滤出.js文件:
// let js_files = files.filter(f => {
//   return f.endsWith('.js');
// });

// // 处理每个js文件:
// for (let f of js_files) {
//   console.log(`process controller : ${f}`);
//   // 导入js文件:
//   let mapping = require(__dirname + '/controllers/' + f);
//   for (let url in mapping) {
//     if (url.startsWith('GET')) {
//       // 如果url类似"GET xxx":
//       let path = url.substring(4);
//       router.get(path, mapping[url]);
//       console.log(`register URL mapping: GET ${path}`);
//     } else if (url.startsWith('POST ')) {
//       let path = url.substring(5);
//       router.post(path, mapping[url]);
//       console.log(`register URL mapping: POST ${path}`);
//     } else {
//       // 无效的URL:
//       console.log(`invalid URL: ${url}`);
//     }
//   }
// }

const Koa = require('koa');

const bodyParser = require('koa-bodyparser');

const controller = require('./controller');

const app = new Koa();

// log request URL:
app.use(async (ctx, next) => {
  console.log(`Process ${ctx.request.method} ${ctx.request.url}...`);
  await next();
});

// parse request body:
app.use(bodyParser());

// add controllers:
app.use(controller());

// app begin
app.listen(3000);
console.log('app started at port 3000...');
